package com.ykht.proj.comsrv.handle;

import com.ykht.proj.comsrv.entity.VSubscribeMsg;
import com.ykht.proj.comsrv.vo.SubscribeMsg;

/**
 * 订阅消息接口
 */
public interface SubscribeMsgHandler<T> {

	/**
	 * 检查是否可发送
	 * @param msg
	 * @return
	 */
	VSubscribeMsg checkSend(SubscribeMsg msg);
	/**
	 * 转换数
	 */
	T transform(SubscribeMsg tempMsg);
	/**
	 * 发送数据,可能调用不同的接口
	 */
	void send(T data) throws Exception;

	/**
	 * @throws Exception
	 */
	void save(VSubscribeMsg vSubscribeMsg, T data, SubscribeMsg tempMsg);

	/**
	 * 处理方法
	 * @param msg
	 */
	void handle(SubscribeMsg msg) throws Exception;
}
